$NG.AllReady(
    function (
        page,
        {
            useAction,
            useValuesChange,
            useUpdateRows,
            useUpdateRow,
            useDataIndexChange,
            useClick,
        }
    ) {
        const mstform = $NG.getCmpApi("p_form_risk_list");
        const list = $NG.getCmpApi("grid");
        const user = $NG.getUser();
        // 解析参数
        setTimeout(() => {
            getPtInfoByPhid();
        }, 500);
        $NG.updateState((updater) => {
            updater.data.p_form_risk_list.setProps({
                u_propose_dt: formatDate(new Date(), "yyyy-mm-dd"),
                u_put_dt: formatDate(new Date(), "yyyy-mm-dd"),
                u_sb_per: {
                    label: user.userName,
                    value: user.userID,
                },
                phid_dept: {
                    label: user.orgName,
                    value: user.orgID,
                },
            });
        });
        //过滤列表
        // 获取全部列表数据

        if (page.oType == "view") {
        } else if (page.oType == "add") {
        }

        ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////--mstform--////////////////////////////////////////////////////////////
        const param = parseUrlParams(location.href);
        if (page.oType == "add" && param.AppTitle.includes("投诉")) {
            mstform.getItem("u_info_source").setValue({
                value: "8570000000000008",
                label: "投诉",
            });
            // $NG.updateState((updater)=>{
            //     updater.data.p_form_risk_list.setProps({
            //         u_info_source:{
            //             label:'投诉',
            //             value:'8570000000000008'
            //         }
            //     })
            // })
        }
        useValuesChange(({ args }) => {
            mstform
                .getItem("u_put_dt")
                .setValue(
                    daysBetweenDates(mstform.getItem("u_put_dt").getItem())
                );
        }, "p_form_risk_list.u_put_dt");
        function daysBetweenDates(dateStr) {
            // 将传入的日期字符串转换为 Date 对象
            const inputDate = new Date(dateStr);
            // 获取当前日期
            const currentDate = new Date();

            // 将日期对象转换为时间戳（以毫秒为单位）
            const inputTime = inputDate.getTime();
            const currentTime = currentDate.getTime();

            // 计算两个日期之间的时间差（以毫秒为单位）
            const timeDifference = Math.abs(inputTime - currentTime);

            // 将时间差转换为天数
            const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
            const daysDifference = Math.floor(timeDifference / oneDay);

            return daysDifference;
        }
        //   mstform.setHidden("bill_dt", true);
        $NG.updateUI((updater) => {
            updater.fieldSetForm.p_form_risk_list.bill_dt.setProps({
                hidden: true,
            });
        });
        function uInvolveGys(params) {
            if (
                mstform.getItem("u_involve_gys").getValue() == 0 ||
                !mstform.getItem("u_involve_gys").getValue()
            ) {
                $NG.updateUI((updater) => {
                    console.log(updater);

                    const fields = ["phid_supply_ent"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: true, //隐藏
                            // required: true, //必输
                            // disabled: true, //只读
                        });
                    });
                });
            } else {
                $NG.updateUI((updater) => {
                    console.log(updater);

                    const fields = ["phid_supply_ent"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: false, //隐藏
                            required: true,
                        });
                    });
                });
            }
        }
        useValuesChange(({ args }) => {
            uInvolveGys();
        }, "p_form_risk_list.u_involve_gys");
        uInvolveGys();
        uType();
        function uType(params) {
            console.log(`风险类型`, mstform.getItem("u_type").getValue());
            if (mstform.getItem("u_type").getValue() == 1) {
                console.log(`测试人`);
                $NG.updateUI((updater) => {
                    const fields = ["u_problem_degree"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: true, //隐藏
                            // required: true, //必输
                            // disabled: true, //只读
                        });
                    });
                });
                $NG.updateUI((updater) => {
                    const fields = ["u_risk_problem_cla", "u_risk_grad"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: false, //隐藏
                            required: true, //必输
                            // disabled: true, //只读
                        });
                    });
                });
            } else if (mstform.getItem("u_type").getValue() == 2) {
                $NG.updateUI((updater) => {
                    const fields = ["u_problem_degree"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: false, //隐藏
                            required: true, //必输
                            // disabled: true, //只读
                        });
                    });
                });
                $NG.updateUI((updater) => {
                    const fields = ["u_risk_problem_cla", "u_risk_grad"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: true, //隐藏
                            required: false, //必输
                            // disabled: true, //只读
                        });
                    });
                });
            }
        }
        uType();
        useValuesChange(({ args }) => {
            uType();
        }, "p_form_risk_list.u_type");
        function uIfYfqs(params) {
            if (
                mstform.getItem("u_if_yfqs").getValue() == 0 ||
                !mstform.getItem("u_if_yfqs").getValue()
            ) {
                $NG.updateUI((updater) => {
                    console.log(updater);

                    const fields = [
                        "u_product_zu",
                        "u_product_category",
                        "u_version",
                    ];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: true, //隐藏
                            // required: true, //必输
                            // disabled: true, //只读
                        });
                    });
                });
            } else {
                $NG.updateUI((updater) => {
                    console.log(updater);

                    const fields = [
                        "u_product_zu",
                        "u_product_category",
                        "u_version",
                    ];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup1[
                            field
                        ].setProps({
                            hidden: false, //隐藏
                            required: true,
                        });
                    });
                });
            }
            hiddenform();
        }
        useValuesChange(({ args }) => {
            uIfYfqs();
        }, "p_form_risk_list.u_if_yfqs");
        uIfYfqs();
        hiddenform();
        function hiddenform() {
            if (mstform.getItem("u_if_yfqs").getValue() == "0") {
                $NG.updateUI((res) => {
                    res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup5.setProps(
                        { hidden: true }
                    );
                });
                $NG.updateUI((res) => {
                    res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup4.setProps(
                        { hidden: true }
                    );
                });
            } else {
                $NG.updateUI((res) => {
                    res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup5.setProps(
                        { hidden: false }
                    );
                });
                $NG.updateUI((res) => {
                    res.fieldSetForm.p_form_risk_list.PCFieldSetPanelGroup4.setProps(
                        { hidden: false }
                    );
                });
            }
        }
        if (
            page.oType == "add" ||
            page.oType == "edit" ||
            page.oType == "copy"
        ) {
            // 获取初始值
            let cache = mstform.getItem("phid_pc").getValue();
            // 设置定时器
            const timer = setInterval(function () {
                const phid_pc = mstform.getItem("phid_pc").getValue();
                if (phid_pc !== undefined && phid_pc !== cache) {
                    // 后续处理表体数据逻辑
                    getPtInfoByPhid();
                    cache = phid_pc;
                }
            }, 1000);
        }
        useValuesChange(({ args }) => {
            console.log("项目监听", args);

            // getProjectInfo();
            // cntMFilter()
            getPtInfoByPhid();
        }, "p_form_risk_list.phid_pc");


        if (page.oType == "add") {
            if (!mstform.getItem("u_info_source").getValue()){
                const data = $NG.getPageState().data.p_form_risk_list.phid_schemeid;
                let str = null;
                if (data == "8570000000000165") {
                    str = {
                        value: "8570000000000003",
                        label: "现场回访",
                    };
                } else if (data == "8570000000000167") {
                    str = {
                        value: "8570000000000002",
                        label: "电话回访",
                    };
                }
                $NG.updateState((updater) => {
                    updater.data.p_form_risk_list.setProps({
                        u_info_source: { ...str },
                    });
                });
            };
            
            // console.log(data.data.p_form_risk_list.phid_schemeid);
        }

       
        useValuesChange(({ args }) => {
            console.log(args[0].u_info_source?.origin.phid);
        }, "p_form_risk_list.u_info_source");
        ////////////////////////////////////////////////////////////--字段变化逻辑--////////////////////////////////////////////////////////////

        if (
            page.oType == "add" ||
            page.oType == "edit" ||
            page.oType == "copy"
        ) {
            // 项目监听

            //单据引用后有值的字段
            let cache = mstform.getItem("phid_pc").getValue();
            const timer = setInterval(function () {
                try {
                    const mstform = $NG.getCmpApi("p_form_risk_list");
                    const phid_pc = mstform.getItem("phid_pc").getValue();
                    if (phid_pc !== undefined && phid_pc !== cache) {
                        //todo...后续处理表体数据逻辑
                        // getProjectInfo();
                        cache = phid_pc;
                    }
                } catch (e) { }
            }, 1000);
        }
        let gxrInfo = null;
        const timerG = setInterval(function () {
            try {
                const mstform = $NG.getCmpApi("p_form_risk_list");
                const gxr = mstform.getItem("u_customer_name").getValue();
                if (gxr !== undefined && gxr !== gxrInfo) {
                    //todo...后续处理表体数据逻辑
                    getGxrInfo();
                    gxrInfo = gxr;
                }
            } catch (e) { }
        }, 1000);
        // // 监听干系人
        // useValuesChange(({ args }) => {
        //   console.log("干系人监听", args);
        //   getGxrInfo();
        // }, "p_form_risk_list.u_customer_name");

        //监听风险问题识别日期
        useValuesChange(({ args }) => {
            console.log(`监听风险问题识别日期`, args);
            if (
                daysBetween(
                    args[0].u_put_dt,
                    formatDate(new Date(), "yyyy-mm-dd"),
                    true
                ) < 0
            ) {
                $NG.alert("时间不得大于当前日期！");
                $NG.updateState((updater) => {
                    updater.data.p_form_risk_list.setProps({
                        u_put_dt: formatDate(new Date(), "yyyy-mm-dd"),
                        u_sustain_time: 0,
                    });
                });
            }

            if (args[0].u_put_dt) {
                $NG.updateState((updater) => {
                    updater.data.p_form_risk_list.setProps({
                        u_sustain_time: daysBetween(
                            mstform.getItem("u_put_dt").getValue(),
                            formatDate(new Date(), "yyyy-mm-dd")
                        ),
                    });
                });
            }
        }, "p_form_risk_list.u_put_dt");
        console.log("用户信息", user);

        ////////////////////////////////////////////////////////////--mstformFunction--////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////--mstformFunction--////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////--mstformFunction--////////////////////////////////////////////////////////////
        u_info_sourceFilter();
        function u_info_sourceFilter() {
            if (page.oType == "add" || page.oType == "edit") {
                if (!param.AppTitle.includes("投诉")) {
                    $NG.updateUI((updater) => {
                        updater.fieldSetForm.p_form_risk_list.u_info_source.setProps(
                            {
                                clientSqlFilter: "u_name not in ('投诉')",
                            }
                        );
                    });
                } else {
                    $NG.updateUI((updater) => {
                        updater.fieldSetForm.p_form_risk_list.u_info_source.setProps(
                            {
                                clientSqlFilter: "u_name in ('投诉')",
                            }
                        );
                    });
                }
            }
        }

        function getPtInfoByPhid() {
            console.log(`项目`, mstform.getItem("phid_pc").getValue());
            if (mstform.getItem("phid_pc").getValue()) {
                $NG.execServer(
                    "getPtInfoByPhid",
                    { phid: mstform.getItem("phid_pc").getValue() },
                    function (res) {
                        const datas = JSON.parse(res.data)[0].extendObjects;
                        console.log(datas);
                        const date = new Date().toISOString().split("T")[0];
                        mstform
                            .getItem("u_topic")
                            .setValue(
                                `${date}${datas.pc_name}(${datas.pc_no})风险问题清单`
                            );
                        $NG.updateState((updater) => {
                            updater.data.p_form_risk_list.setProps({
                                //项目编码
                                u_pc_no: datas.pc_no,
                                // 项目经理
                                phid_emp: {
                                    label: datas.project_manager_name,
                                    value: datas.project_manager_phid,
                                },
                                phid_org: {
                                    //事业部or组织
                                    value: datas.org_phid,
                                    label: datas.org_name,
                                },
                                u_regional_center: {
                                    //区域中心
                                    value: datas.regional_center_phid,
                                    label: datas.regional_center_name,
                                },
                                //产品线
                                u_product_line: {
                                    value: datas.midwife_phid,
                                    label: datas.midwife_name,
                                },
                                //行业线
                                u_industry_line: {
                                    value: datas.hyx_phid,
                                    label: datas.hyx_name,
                                },
                                // //计划开工日期
                                // start_date: datas.start_date,
                                // //计划完工日期
                                // end_date: datas.end_date,
                                // //售前顾问
                                // u_sqgw: {
                                //   value: datas.user_sqgw_phid,
                                //   label: datas.user_sqgw_name,
                                // },
                                // //项目经理
                                // u_project_manager: {
                                //   value: datas.project_manager_phid,
                                //   label: datas.project_manager_name,
                                // },
                                // //事业部
                                // u_division: {
                                //   value: datas.division_phid,
                                //   label: datas.division_name,
                                // },
                                // //组织
                                // phid_org_phid: {
                                //   value: datas.phid_org_phid,
                                //   label: datas.phid_org_name,
                                // },
                                // //区域中心
                                // u_regional_center: {
                                //   value: datas.regional_center_phid,
                                //   label: datas.regional_center_name,
                                // },

                                // //客户名称
                                // customer: {
                                //   value: datas.customer_id,
                                //   label: datas.customer_name,
                                // },
                                // //部门
                                // u_dept: {
                                //   value: datas.dept_phid,
                                //   label: datas.dept_name,
                                // },
                                // //项目类型
                                // u_pc_type: {
                                //   value: datas.type_phid,
                                //   label: datas.type_name,
                                // },
                                // //项目预算组织编码
                                // budget_org_code: datas.budget_org_no,
                                // //项目预算组织
                                // budget_org_phid: {
                                //   value: datas.budget_org_phid,
                                //   label: datas.budget_org_name,
                                // },
                            });
                        });
                    }
                );
            }
        }
        function getProjectInfo(
            isReturn = false,
            phid = mstform.getItem("phid_pc").getValue(),
            fun
        ) {
            if (!mstform.getItem("phid_pc").getValue()) return;
            try {
                setTimeout(() => {
                    $NG.execServer("getPtInfoByPhid", { phid: phid }, (res) => {
                        const _data = JSON.parse(res.data)[0].extendObjects;
                        console.log(`获取项目信息`, _data);
                        if (isReturn) {
                            fun(_data);
                        } else {
                            $NG.updateState((updater) => {
                                updater.data.p_form_risk_list.setProps({
                                    u_pc_no: _data.pc_no, //项目编码
                                    // 项目经理
                                    phid_emp: {
                                        label: _data.project_manager_name,
                                        value: _data.project_manager_phid,
                                    },
                                    phid_org: {
                                        //事业部or组织
                                        value: _data.org_phid,
                                        label: _data.org_name,
                                    },
                                    u_regional_center: {
                                        //区域中心
                                        value: _data.regional_center_phid,
                                        label: _data.regional_center_name,
                                    },
                                });
                            });
                        }
                    });
                }, 100);
            } catch (err) {
                $NG.alert("获取项目信息发生失败请检查~");
            }
        }

        // 干系人信息查询
        function getGxrInfo() {
            $NG.execServer(
                "getGxrInfo",
                { phid: mstform.getItem("u_customer_name").getValue() },
                function (res) {
                    console.log("干系人信息查询", res);
                    const _data = JSON.parse(res.data)[0].extendObjects;
                    console.log("信息", _data);
                    $NG.updateState((updater) => {
                        updater.data.p_form_risk_list.setProps({
                            // JIRA号
                            u_jira_no: "",
                            // 客户层级
                            u_custom_level: _data.u_level,
                            // 客户职务
                            u_customer_position: _data.u_position,
                            // 客户单位名称
                            u_customer_unit: _data.u_customer_name,
                        });
                    });
                }
            );
        }
    },
    function (listPage, { useAction }) {
        //列表页面逻辑
        const list = $NG.getCmpApi("grid");
        const user = $NG.getUser();
        console.log(`列表触发`);
        listFilter();
        let data = null;
        function listFilter() {
            setInterval(() => {
                // 判断地址是否发生变化
                if (data !== list.getRows()) {
                    console.log(`变化`);
                    const param = parseUrlParams(location.href);
                    const listData = list.getRows();
                    console.log(`获取列表`, listData);
                    const arr = listData.reduce((value, item) => {
                        if (param.AppTitle !== "投诉上报") {
                            if (item.u_info_source != "8570000000000008") {
                                value.push(item);
                            }
                        } else {
                            if (item.u_info_source == "8570000000000008") {
                                value.push(item);
                            }
                        }
                        return value;
                    }, []);
                    list.clearRows().then(() => {
                        list.addRows([...arr]).then(() => {
                            data = list.getRows();
                        });
                        console.log(`更新`);
                    });
                }
            }, 10);
        }
    }
);
// 格式化日期
function formatDate(dateStr, outputFormat) {
    const date = new Date(dateStr);

    if (isNaN(date)) {
        return "无效的日期字符串";
    }

    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, "0");
    const day = String(date.getDate()).padStart(2, "0");
    const hours = String(date.getHours()).padStart(2, "0");
    const minutes = String(date.getMinutes()).padStart(2, "0");

    let formattedDate;

    switch (outputFormat) {
        case "yyyy-mm-dd":
            formattedDate = `${year}-${month}-${day}`;
            break;
        case "yyyy-mm-dd HH:mm":
            formattedDate = `${year}-${month}-${day} ${hours}:${minutes}`;
            break;
        // 可以根据需要继续添加其他格式的处理逻辑
        default:
            formattedDate = "不支持的输出格式";
    }

    return formattedDate;
}
// 计算2个日期之间得天数
function daysBetween(date1, date2, abs = false) {
    // 将日期字符串转换为 Date 对象
    const d1 = new Date(date1);
    const d2 = new Date(date2);

    // 检查输入是否是有效日期
    if (isNaN(d1) || isNaN(d2)) {
        throw new Error("Invalid date format. Use 'yyyy-mm-dd'.");
    }

    // 计算时间差（毫秒）
    const timeDiff = Math.abs(d2 - d1);
    if (abs) {
        if (d2 - d1 >= 0) {
            return 1;
        } else {
            return -1;
        }
    }

    // 将毫秒转换为天数
    const dayDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));

    return dayDiff;
}
function parseUrlParams(url) {
    const paramsObj = {};
    const queryString = url.split("?")[1];
    const paramPairs = queryString.split("&");
    paramPairs.forEach((paramPair) => {
        const [key, value] = paramPair.split("=");
        const decodedValue = decodeURIComponent(value);
        paramsObj[key] = decodedValue;
    });
    return paramsObj;
}
